home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-1.iso / Files / Util / S / ShareDisk 2.0.sit / ShareDisk 2.0 / Control Panels & Extensions / Async Family 1.14 / For programmers only / Sample.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-13  |  4.6 KB  |  160 lines  |  [TEXT/KAHL]

  1. /******************************************************************************/
  2. /*
  3.     Alessandro Levi Montalcini
  4.     C.so Re Umberto 10
  5.     10121 Torino
  6.     Italy
  7.     
  8.     Mr.Player's Apple Events Sample Code - June 1992
  9.     
  10.     WARNING: For the Apple Event routines to work,
  11.     you must set the "Apple-Events Aware" flag
  12.     in your application's 'SIZE' resource.
  13. */
  14. /******************************************************************************/
  15.  
  16. #include "Player.h"
  17.  
  18. OSErr    GetMrPlayerPSN            (ProcessSerialNumber *psn);
  19. OSErr    SendEventToMrPlayer        (long eventType, long eventID, long paramType, long paramID, long paramValue);
  20. OSErr    SendOpenFileToMrPlayer    (FSSpec *file);
  21.  
  22. /******************************************************************************/
  23.  
  24. void main(void)
  25. {
  26.     ProcessSerialNumber psn;
  27.     OSErr error;
  28.     
  29.     MaxApplZone();                    /* initialize everything */
  30.     InitGraf(&thePort);
  31.     InitFonts();
  32.     InitWindows();
  33.     InitMenus();
  34.     TEInit();
  35.     InitCursor();
  36.     InitDialogs(0L);
  37.     FlushEvents(everyEvent,0);
  38.     
  39.     error = GetMrPlayerPSN(&psn);    /* is Mr.Player installed ? */
  40.     if(error) SysBeep(1);            /* no - play system beep and quit */
  41.     else                            /* yes - send sample apple events */
  42.     {
  43.         /* asynchronously play default system beep */
  44.         error = SendEventToMrPlayer(kPlayerCreator, kAEvtBeep, typeVoid, 0L, 0L);
  45.         
  46.         /* asynchronously play sound resource with ID = 5 */
  47.         error = SendEventToMrPlayer(kPlayerCreator, kAEvtPlay, typeShortInteger, kAEParmSndID, 5);
  48.         
  49.         /* asynchronously play sound resource with index = 3 */
  50.         error = SendEventToMrPlayer(kPlayerCreator, kAEvtPlay, typeShortInteger, kAEParmSndIX, 3);
  51.         
  52.         /* stop playing sounds */
  53.         error = SendEventToMrPlayer(kPlayerCreator, kAEvtStop, typeVoid, 0L, 0L);
  54.         
  55.         /* quit Mr.Player */
  56.         error = SendEventToMrPlayer(kCoreEventClass, kAEQuitApplication, typeVoid, 0L, 0L);
  57.     }
  58.     
  59.     ExitToShell();                    /* return to Finder */
  60. }
  61.  
  62. /******************************************************************************/
  63.  
  64. OSErr GetMrPlayerPSN(ProcessSerialNumber *psn)
  65. {
  66.     ProcessSerialNumber *result;
  67.     OSErr error;
  68.     
  69.     error = Gestalt(kPlayerCreator, (long*)&result);
  70.     if(error) return(error);
  71.     
  72.     *psn = *result;
  73.     return(noErr);
  74. }
  75.  
  76. /******************************************************************************/
  77.  
  78. OSErr SendEventToMrPlayer(long eventType, long eventID, long paramType, long paramID, long paramValue)
  79. {
  80.     ProcessSerialNumber    psn;
  81.     AppleEvent            event, reply;
  82.     AEAddressDesc        address;
  83.     short                paramWord;
  84.     OSErr                error;
  85.     
  86.     error = GetMrPlayerPSN(&psn);
  87.     if(error==noErr)
  88.     {
  89.         error = AECreateDesc(typeProcessSerialNumber, (Ptr)&psn, (Size)sizeof(ProcessSerialNumber), &address);
  90.         if(error==noErr)
  91.         {
  92.             error = AECreateAppleEvent(eventType, eventID, &address, kAutoGenerateReturnID, kAnyTransactionID, &event);
  93.             if(error==noErr)
  94.             {
  95.                 switch(paramType)
  96.                 {
  97.                     case typeShortInteger:
  98.                         paramWord = (short)paramValue;
  99.                         error = AEPutParamPtr(&event, paramID, typeShortInteger, ¶mWord, (Size)sizeof(short));
  100.                         break;
  101.                     case typeLongInteger:
  102.                         error = AEPutParamPtr(&event, paramID, typeLongInteger, ¶mValue, (Size)sizeof(long));
  103.                         break;
  104.                 }
  105.                 if(error==noErr)
  106.                 {
  107.                     error = AESend(&event, &reply, kAENoReply, kAENormalPriority, kAEDefaultTimeout, (ProcPtr)0L, (ProcPtr)0L);
  108.                     if(error==noErr) (void)WakeUpProcess(&psn);
  109.                 }
  110.                 (void)AEDisposeDesc(&event);
  111.             }
  112.             (void)AEDisposeDesc(&address);
  113.         }
  114.     }
  115.     return(error);
  116. }
  117.  
  118. /******************************************************************************/
  119.  
  120. OSErr SendOpenFileToMrPlayer(FSSpec *file)
  121. {
  122.     ProcessSerialNumber    psn;
  123.     AppleEvent            event, reply;
  124.     AEAddressDesc        address;
  125.     AEDescList            documents;
  126.     OSErr                error;
  127.     
  128.     error = GetMrPlayerPSN(&psn);
  129.     if(error==noErr)
  130.     {
  131.         error = AECreateDesc(typeProcessSerialNumber, (Ptr)&psn, (Size)sizeof(ProcessSerialNumber), &address);
  132.         if(error==noErr)
  133.         {
  134.             error = AECreateAppleEvent(kCoreEventClass, kAEOpenDocuments, &address, kAutoGenerateReturnID, kAnyTransactionID, &event);
  135.             if(error==noErr)
  136.             {
  137.                 error = AECreateList(0L, 0L, FALSE, &documents);
  138.                 if(error==noErr)
  139.                 {
  140.                     error = AEPutPtr(&documents, 1L, typeFSS, (Ptr)file, (Size)sizeof(FSSpec));
  141.                     if(error==noErr)
  142.                     {
  143.                         error = AEPutParamDesc(&event, keyDirectObject, &documents);
  144.                         if(error==noErr)
  145.                         {
  146.                             error = AESend(&event, &reply, kAENoReply, kAENormalPriority, kAEDefaultTimeout, (ProcPtr)0L, (ProcPtr)0L);
  147.                             if(error==noErr) (void)WakeUpProcess(&psn);
  148.                         }
  149.                     }
  150.                     (void)AEDisposeDesc(&documents);
  151.                 }
  152.                 (void)AEDisposeDesc(&event);
  153.             }
  154.             (void)AEDisposeDesc(&address);
  155.         }
  156.     }
  157.     return(error);
  158. }
  159.  
  160. /******************************************************************************/